Learn in 10 minutes

Learn in 10 minutes

Impara Perl in 10 minuti

Perl è un potente linguaggio di programmazione di alto livello noto per le sue capacità di elaborazione del testo e flessibilità. Originariamente sviluppato per compiti di amministrazione di sistema, Perl si è evoluto in un linguaggio versatile utilizzato per lo sviluppo web, programmazione di rete e altro. Questo tutorial copre i concetti fondamentali di Perl per aiutarti a imparare rapidamente il linguaggio.

1. Scrivere il primo programma Perl

Iniziamo con un semplice programma. Crea un file chiamato hello.pl e inserisci il seguente codice:

#!/usr/bin/perl
print "Hello, World!\n";

Salva il file ed esegui il seguente comando nel terminale:

perl hello.pl

L’output sarà:

Hello, World!

Questo semplice programma dimostra la funzionalità di output di base di Perl. La funzione print viene utilizzata per visualizzare informazioni di testo nella console.

2. Sintassi di base

La sintassi di Perl è flessibile ed espressiva, con diverse caratteristiche distintive.

# Questo è un commento
print "Hello, World!\n";

Regole di sintassi di base in Perl:

  • Commenti: I commenti su una riga iniziano con #
  • Istruzioni: Terminano con punto e virgola ;
  • Riga Shebang: #!/usr/bin/perl all’inizio dei file di script
  • Variabili: Utilizzano caratteri speciali per denotare i tipi di variabile ($, @, %)
  • Virgolette per stringhe: Possono utilizzare apici singoli ' o doppi "

3. Variabili e tipi di dati

In Perl, le variabili sono tipizzate dinamicamente e utilizzano caratteri speciali per denotare il loro tipo.

Variabili scalari (valori singoli):

$name = "Alice";
$age = 25;
$temperature = 36.5;
$is_active = 1;  # 1 per vero, stringa vuota per falso

Variabili array (liste ordinate):

@fruits = ("apple", "banana", "cherry");
@numbers = (1, 2, 3, 4, 5);

Variabili hash (coppie chiave-valore):

%person = (
    "name" => "John",
    "age" => 30,
    "city" => "New York"
);

3.1 Variabili scalari

Gli scalari contengono valori singoli come stringhe, numeri o riferimenti.

# Operazioni su stringhe
$text = "Perl Programming";
print length($text);        # Lunghezza della stringa
print uc($text);            # Converti in maiuscolo
print lc($text);            # Converti in minuscolo
print substr($text, 0, 4);  # Estrai sottostringa

# Operazioni numeriche
$x = 10;
$y = 3;
print $x + $y;    # 13
print $x - $y;    # 7
print $x * $y;    # 30
print $x / $y;    # 3.333...
print $x % $y;    # 1 (modulo)

3.2 Variabili array

Gli array sono collezioni ordinate che possono contenere più valori.

@colors = ("red", "green", "blue");

# Accesso agli elementi dell'array
print $colors[0];     # "red" (usa $ per elemento singolo)
print $colors[1];     # "green"
print $colors[-1];    # "blue" (ultimo elemento)

# Operazioni sugli array
push(@colors, "yellow");     # Aggiungi alla fine
pop(@colors);                # Rimuovi dalla fine
shift(@colors);              # Rimuovi dall'inizio
unshift(@colors, "purple");  # Aggiungi all'inizio

# Funzioni sugli array
print scalar(@colors);       # Numero di elementi
print $#colors;              # Ultimo indice

3.3 Variabili hash

Gli hash sono collezioni di coppie chiave-valore.

%student = (
    name => "Alice",
    age => 20,
    major => "Computer Science"
);

# Accesso agli elementi dell'hash
print $student{"name"};     # "Alice"
print $student{age};        # 20

# Operazioni sugli hash
$student{"gpa"} = 3.8;     # Aggiungi nuova coppia chiave-valore
delete $student{"age"};    # Rimuovi coppia chiave-valore

# Funzioni sugli hash
@keys = keys %student;      # Ottieni tutte le chiavi
@values = values %student;  # Ottieni tutti i valori

4. Controllo del flusso

Perl fornisce diverse istruzioni di controllo del flusso per gestire l’esecuzione del programma.

4.1 Istruzioni if

L’istruzione if valuta una condizione ed esegue il suo blocco se la condizione è vera.

$age = 20;
if ($age >= 18) {
    print "Adult\n";
} elsif ($age >= 13) {
    print "Teen\n";
} else {
    print "Child\n";
}

# if su una riga
print "Adult\n" if $age >= 18;

4.2 Istruzioni unless

unless è l’opposto di if - esegue quando la condizione è falsa.

$age = 15;
unless ($age >= 18) {
    print "Not an adult\n";
}

# unless su una riga
print "Not an adult\n" unless $age >= 18;

4.3 Cicli

Perl supporta vari costrutti di ciclo.

Ciclo while:

$count = 0;
while ($count < 5) {
    print "Count: $count\n";
    $count++;
}

Ciclo for:

for ($i = 0; $i < 5; $i++) {
    print "i = $i\n";
}

Ciclo foreach:

@fruits = ("apple", "banana", "cherry");
foreach $fruit (@fruits) {
    print "Fruit: $fruit\n";
}

# Utilizzo della variabile predefinita $_
foreach (@fruits) {
    print "Fruit: $_\n";
}

last e next:

foreach (1..10) {
    last if $_ == 5;     # Esci dal ciclo
    next if $_ % 2 == 0; # Salta i numeri pari
    print "$_\n";        # Output: 1, 3
}

5. Sottoprogrammi

I sottoprogrammi in Perl sono definiti utilizzando la parola chiave sub.

Definizione di base del sottoprogramma:

sub greet {
    my $name = shift;
    return "Hello, $name!";
}

# Chiamata del sottoprogramma
$message = greet("John");
print $message;

Utilizzo dei parametri:

sub add_numbers {
    my ($a, $b) = @_;
    return $a + $b;
}

$result = add_numbers(5, 3);
print "Sum: $result\n";

Parametri predefiniti:

sub greet {
    my ($name, $greeting) = @_;
    $greeting = "Hello" unless defined $greeting;
    return "$greeting, $name!";
}

print greet("Alice");          # "Hello, Alice!"
print greet("Bob", "Hi");      # "Hi, Bob!"

6. Espressioni regolari

Perl è famoso per le sue potenti capacità di espressioni regolari.

Corrispondenza di pattern di base:

$text = "Hello, World!";

if ($text =~ /Hello/) {
    print "Found 'Hello'\n";
}

# Corrispondenza senza distinzione maiuscole/minuscole
if ($text =~ /world/i) {
    print "Found 'world' (case-insensitive)\n";
}

Sostituzione:

$text = "I like cats and cats are cute";
$text =~ s/cats/dogs/g;  # Sostituisci tutte le occorrenze
print "$text\n";         # "I like dogs and dogs are cute"

Estrazione delle corrispondenze:

$email = "[email protected]";
if ($email =~ /(\w+)@(\w+\.\w+)/) {
    print "Username: $1\n";      # "user"
    print "Domain: $2\n";        # "example.com"
}

7. Operazioni sui file

Perl fornisce metodi semplici per leggere e scrivere file.

Lettura di file:

# Leggi l'intero file
open(my $fh, '<', 'example.txt') or die "Cannot open file: $!";
my $content = do { local $/; <$fh> };
close($fh);
print $content;

# Leggi riga per riga
open(my $fh, '<', 'example.txt') or die "Cannot open file: $!";
while (my $line = <$fh>) {
    print $line;
}
close($fh);

Scrittura di file:

# Scrivi su file
open(my $fh, '>', 'output.txt') or die "Cannot open file: $!";
print $fh "Hello, Perl!\n";
close($fh);

# Aggiungi a file
open(my $fh, '>>', 'output.txt') or die "Cannot open file: $!";
print $fh "Appending new content.\n";
close($fh);

8. Funzioni integrate

Perl include molte utili funzioni integrate.

Funzioni per stringhe:

$text = "  Perl Programming  ";
print length($text);        # Lunghezza della stringa
print uc($text);            # Converti in maiuscolo
print lc($text);            # Converti in minuscolo
print substr($text, 0, 4);  # Estrai sottostringa
print index($text, "Prog"); # Trova posizione della sottostringa

Funzioni per array:

@numbers = (3, 1, 4, 1, 5, 9, 2);
print join(", ", sort @numbers);      # "1, 1, 2, 3, 4, 5, 9"
print join(", ", reverse @numbers);   # "2, 9, 5, 1, 4, 1, 3"

# Filtra array
@filtered = grep { $_ > 3 } @numbers;
print join(", ", @filtered);          # "4, 5, 9"

# Trasforma array
@doubled = map { $_ * 2 } @numbers;
print join(", ", @doubled);           # "6, 2, 8, 2, 10, 18, 4"

Funzioni per hash:

%person = (name => "Alice", age => 25, city => "New York");
@keys = keys %person;      # Ottieni tutte le chiavi
@values = values %person;  # Ottieni tutti i valori

# Controlla se la chiave esiste
if (exists $person{age}) {
    print "Age exists\n";
}

9. Moduli Perl

Perl ha un ricco ecosistema di moduli disponibili tramite CPAN.

Utilizzo dei moduli core:

use strict;
use warnings;
use Data::Dumper;

%data = (name => "Bob", age => 30);
print Dumper(\%data);  # Stampa formattata della struttura dati

Installazione e utilizzo dei moduli CPAN:

# Installa modulo da CPAN
cpan install JSON
use JSON;

# Analizza JSON
$json_string = '{"name": "Alice", "age": 25}';
$person = decode_json($json_string);
print $person->{name};  # "Alice"

# Genera JSON
$person_hash = { name => "Bob", age => 30 };
$json_output = encode_json($person_hash);
print $json_output;  # {"name":"Bob","age":30}

10. Guida di stile Perl

Perl ha convenzioni della comunità che promuovono codice pulito e leggibile.

Indentazione: Utilizza 4 spazi per l’indentazione.

Denominazione delle variabili:

  • Utilizza nomi descrittivi
  • Segui la convenzione snake_case
  • Utilizza nomi di variabili significativi

Organizzazione del codice:

  • Utilizza use strict; e use warnings; all’inizio degli script
  • Dichiara le variabili con my per limitare l’ambito
  • Utilizza nomi di sottoprogrammi significativi

Documentazione:

  • Utilizza POD (Plain Old Documentation) per documentare il codice
  • Includi commenti per logiche complesse

La flessibilità di Perl e le sue potenti capacità di elaborazione del testo lo rendono una scelta eccellente per compiti di amministrazione di sistema, sviluppo web ed elaborazione dati. Il suo ricco ecosistema di moduli e il forte supporto della comunità continuano a renderlo rilevante negli ambienti di programmazione moderni.